// pages/detail-songs/index.js
import {
  getSongMenuDetail
} from "../../../service/api_music"
import {
  rankingStore,
  playerStore
} from "../../../store/index"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    type: "",
    ranking: "",
    songInfo: {}
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const type = options.type
    this.setData({
      type
    })
    if (type === "menu") {
      // 获取到歌单列表传过来的参数
      const id = options.id
      // 需要单独发送请求
      getSongMenuDetail(id).then(res => {
        // 只能拿到10条数据，是因为没有登陆的原因
        this.setData({
          songInfo: res.playlist
        })
      })
    } else if (type === "rank") {
      // 获取到榜单列表传过来的参数
      const ranking = options.ranking
      // 卸载也要用，建议设置到全局
      this.setData({
        ranking
      })
      // 拿到列表名称，去store中拿共享数据
      rankingStore.onState(this.data.ranking, this.getRankingDataHanlder)
    }

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    // ranking有值再进行 挂载监听
    if (this.data.ranking) {
      rankingStore.offState(this.data.ranking, this.getRankingDataHanlder)
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  // ========================   事件处理   ========================
  // 监听 onState 共享数据的回调，数据发生变化就会触发，重新赋值
  getRankingDataHanlder: function (res) {
    this.setData({
      songInfo: res
    })
  },

  // 歌曲列表&索引的store存储
  handleSongItemClick: function (event) {
    const index = event.currentTarget.dataset.index
    playerStore.setState("playListSongs", this.data.songInfo.tracks)
    playerStore.setState("playListIndex", index)
  }
})